/**
 * Created by jimmy-jiang on 2016/11/21.
 */
import { Token } from './token.js';
import { Config } from './config.js';
class Base {
    constructor() {
        'use strict';

        this.baseRestUrl = Config.restUrl;
        this.onPay = Config.onPay;
    }

    //http 请求类, 当noRefech为true时，不做未授权重试机制
    request(params, noRefetch) {
        var that = this;
        var url = this.baseRestUrl + params.url;
        if (!params.type) {
            params.type = 'get';
        }
        /*不需要再次组装地址*/
        if (params.setUpUrl == false) {
            url = params.url;
        }
        uni.request({
            url: url,
            data: params.data,
            method: params.type,
            header: {
                'content-type': 'application/json',
                token: uni.getStorageSync('token')
            },
            success: function (res) {
                // 判断以2（2xx)开头的状态码为正确
                // 异常不要返回到回调中，就在request中处理，记录日志并showToast一个统一的错误即可
                var code = res.statusCode.toString();
                var startChar = code.charAt(0);
                if (startChar == '2') {
                    if (params.sCallback) {
                        params.sCallback(res.data);
                    }
                } else {
                    if (code == '401') {
                        if (!noRefetch) {
                            that._refetch(params);
                        }
                    }
                    that._processError(res);
                    if (params.eCallback) {
                        params.eCallback(res.data);
                    }
                }
            },
            fail: function (err) {
                //wx.hideNavigationBarLoading();
                that._processError(err);
                // params.eCallback && params.eCallback(err);
            }
        });
    }

    requestuploadimg(params) {
        var that = this;
        var url = this.baseRestUrl + params.url;
        /*不需要再次组装地址*/
        if (params.setUpUrl == false) {
            url = params.url;
        }
        var path = params.data.path;
		console.log('上传图片地址'+url)
		console.log('图片',path)
        uni.uploadFile({
            url: url,
            filePath: path,
            name: 'file',
            header: {
                // 'Content-Type': 'multipart/form-data'
            },
            formData: {
                //和服务器约定的token, 一般也可以放在header中
                session_token: uni.getStorageSync('session_token')
            },
            success: function (res) {
				console.log(res)
                if (params.sCallback) {
                    params.sCallback(JSON.parse(res.data));
                }
            },
            fail: function (e) {
				console.log(e)
                uni.showModal({
                    title: '提示',
                    content: '上传失败',
                    showCancel: false
                });
            },
            complete: function () {
                uni.hideToast(); //隐藏Toast
            }
        });
    }

    _processError(err) {
        console.log(err);
    }
    _refetch(param) {
        var token = new Token();
        token.getTokenFromServer((token) => {
            this.request(param, true);
        });
    }

    /*获得元素上的绑定的值*/
    getDataSet(event, key) {
        return event.currentTarget.dataset[key];
    }
}
export { Base };
